#ifndef PIPELINE_STATES_H
#define PIPELINE_STATES_H

#include "Include.h"

namespace devii
{

class PipelineStates
{
public:
	PipelineStates();
	~PipelineStates();

	void pushSamplerState(ID3D11SamplerState* const sampler);
	void setRasterizerState(ID3D11RasterizerState* const rasterizer);
	void setBlendState(ID3D11BlendState* const blend);

	ID3D11SamplerState*const* getSamplerState() const;
	const unsigned int getSamplerSize() const;
	ID3D11RasterizerState* getRasterizerState() const;
	ID3D11BlendState* getBlendState() const;

	void setBlendFactor(float blend_factor[]);
	void setSamplemask(const unsigned int samplemask);
	float* getBlendFactor();
	unsigned int getSamplemask();
private:
	std::vector<ID3D11SamplerState*> sampler_states;
	
	ID3D11RasterizerState* rasterizer;
	ID3D11BlendState* blend;
	float blend_factor[4];
	unsigned int samplemask;
};

}

#endif